home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / ada / gnat1792.zip / gnat179b / t-adainc / a-witeio.ads < prev    next >
Text File  |  1994-05-19  |  15KB  |  437 lines

  1. ------------------------------------------------------------------------------
  2. --                                                                          --
  3. --                         GNAT RUNTIME COMPONENTS                          --
  4. --                                                                          --
  5. --                     A D A . W I D E _ T E X T _ I O                      --
  6. --                                                                          --
  7. --                                 S p e c                                  --
  8. --                                                                          --
  9. --                            $Revision: 1.4 $                              --
  10. --                                                                          --
  11. --           Copyright (c) 1992,1993,1994 NYU, All Rights Reserved          --
  12. --                                                                          --
  13. -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  14. -- terms of the  GNU General Public License as published  by the Free Soft- --
  15. -- ware  Foundation;  either version 2,  or (at your option) any later ver- --
  16. -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  17. -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
  18. -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
  19. -- for  more details.  You should have  received  a copy of the GNU General --
  20. -- Public License  distributed with GNAT;  see file COPYING.  If not, write --
  21. -- to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. --
  22. --                                                                          --
  23. ------------------------------------------------------------------------------
  24.  
  25. with Ada.IO_Exceptions;
  26.  
  27.    pragma Unimplemented_Unit;
  28.  
  29. package Ada.Wide_Text_IO is
  30.  
  31.    type File_Type is limited private;
  32.    type File_Mode is (In_File, Out_File, Append_File);
  33.  
  34.    type Count is range 0 .. Integer'Last;    --  implementation defined;
  35.    subtype Positive_Count is Count range 1 .. Count'Last;
  36.    Unbounded : constant Count := 0;          --  line and page length
  37.  
  38.    subtype Field is Integer range 0 .. 100;  --  implementation defined
  39.    subtype Number_Base is Integer range 2 .. 16;
  40.  
  41.    type Type_Set is (Lower_Case, Upper_Case);
  42.  
  43.    ---------------------
  44.    -- File Management --
  45.    ---------------------
  46.  
  47.    procedure Create (File : in out File_Type;
  48.                      Mode : in File_Mode := Out_File;
  49.                      Name : in String := "";
  50.                      Form : in String := "");
  51.  
  52.    procedure Open   (File : in out File_Type;
  53.                      Mode : in File_Mode;
  54.                      Name : in String;
  55.                      Form : in String := "");
  56.  
  57.    procedure Close  (File : in out File_Type);
  58.    procedure Delete (File : in out File_Type);
  59.    procedure Reset  (File : in out File_Type;
  60.                      Mode : in File_Mode);
  61.  
  62.    procedure Reset  (File : in out File_Type);
  63.  
  64.    function Mode    (File : in File_Type) return File_Mode;
  65.    function Name    (File : in File_Type) return String;
  66.    function Form    (File : in File_Type) return String;
  67.  
  68.    function Is_Open (File : in File_Type) return Boolean;
  69.  
  70.    ------------------------------------------------------
  71.    -- Control of default input, output and error files --
  72.    ------------------------------------------------------
  73.  
  74.    procedure Set_Input (File : in File_Type);
  75.    procedure Set_Output (File : in File_Type);
  76.    procedure Set_Error (File : in File_Type);
  77.  
  78.    function Standard_Input return File_Type;
  79.    function Standard_Output return File_Type;
  80.    function Standard_Error return File_Type;
  81.  
  82.    function Current_Input return File_Type;
  83.    function Current_Output return File_Type;
  84.    function Current_Error return File_Type;
  85.  
  86.    --------------------------------------------
  87.    -- Specification of line and page lengths --
  88.    --------------------------------------------
  89.  
  90.    procedure Set_Line_Length (File : in File_Type; To : in Count);
  91.    procedure Set_Line_Length (To : in Count);
  92.  
  93.    procedure Set_Page_Length (File : in File_Type; To : in Count);
  94.    procedure Set_Page_Length (To : in Count);
  95.  
  96.    function Line_Length (File : in File_Type) return Count;
  97.    function Line_Length return Count;
  98.  
  99.    function Page_Length (File : in File_Type) return Count;
  100.    function Page_Length return Count;
  101.  
  102.    ------------------------------------
  103.    -- Column, Line, and Page Control --
  104.    ------------------------------------
  105.  
  106.    procedure New_Line (File : in File_Type;
  107.                        Spacing : in Positive_Count := 1);
  108.    procedure New_Line (Spacing : in Positive_Count := 1);
  109.  
  110.    procedure Skip_Line (File : in File_Type;
  111.                         Spacing : in Positive_Count := 1);
  112.    procedure Skip_Line (Spacing : in Positive_Count := 1);
  113.  
  114.    function End_Of_Line (File : in File_Type) return Boolean;
  115.    function End_Of_Line return Boolean;
  116.  
  117.    procedure New_Page (File : in File_Type);
  118.    procedure New_Page;
  119.  
  120.    procedure Skip_Page (File : in File_Type);
  121.    procedure Skip_Page;
  122.  
  123.    function End_Of_Page (File : in File_Type) return Boolean;
  124.    function End_Of_Page return Boolean;
  125.  
  126.    function End_Of_File (File : in File_Type) return Boolean;
  127.    function End_Of_File return Boolean;
  128.  
  129.    procedure Set_Col (File : in File_Type;
  130.                       To : in Positive_Count);
  131.    procedure Set_Col (To : in Positive_Count);
  132.  
  133.    procedure Set_Line (File : in File_Type;
  134.                        To : in Positive_Count);
  135.    procedure Set_Line (To : in Positive_Count);
  136.  
  137.    function Col (File : in File_Type) return Positive_Count;
  138.    function Col return Positive_Count;
  139.  
  140.    function Line (File : in File_Type) return Positive_Count;
  141.    function Line return Positive_Count;
  142.  
  143.    function Page (File : in File_Type) return Positive_Count;
  144.    function Page return Positive_Count;
  145.  
  146.    -----------------------------
  147.    -- Characters Input-Output --
  148.    -----------------------------
  149.  
  150.    procedure Get (File : in File_Type; Item : out Wide_Character);
  151.    procedure Get (Item : out Wide_Character);
  152.    procedure Put (File : in File_Type; Item : in Wide_Character);
  153.    procedure Put (Item : in Wide_Character);
  154.  
  155.    --------------------------
  156.    -- Strings Input-Output --
  157.    --------------------------
  158.  
  159.    procedure Get (File : in File_Type; Item : out Wide_String);
  160.    procedure Get (Item : out Wide_String);
  161.    procedure Put (File : in File_Type; Item : in Wide_String);
  162.    procedure Put (Item : in Wide_String);
  163.  
  164.    procedure Get_Line (File : in File_Type;
  165.                        Item : out Wide_String;
  166.                        Last : out Natural);
  167.  
  168.    procedure Get_Line (Item : out Wide_String; Last : out Natural);
  169.    procedure Put_Line (File : in File_Type; Item : in Wide_String);
  170.    procedure Put_Line (Item : in Wide_String);
  171.  
  172.    -----------------------------------
  173.    -- Input-Output of Integer Types --
  174.    -----------------------------------
  175.  
  176.    generic
  177.       type Num is range <>;
  178.  
  179.    package Integer_Io is
  180.  
  181.       Default_Width : Field := 10;  --  Num'Width
  182.       Default_Base  : Number_Base := 10;
  183.  
  184.       procedure Get (File  : in File_Type;
  185.                      Item  : out Num;
  186.                      Width : in Field := 0);
  187.  
  188.       procedure Get (Item  : out Num;
  189.                      Width : in Field := 0);
  190.  
  191.       procedure Put (File  : in File_Type;
  192.                      Item  : in Num;
  193.                      Width : in Field := Default_Width;
  194.                      Base  : in Number_Base := Default_Base);
  195.  
  196.       procedure Put (Item  : in Num;
  197.                      Width : in Field := Default_Width;
  198.                      Base  : in Number_Base := Default_Base);
  199.  
  200.       procedure Get (From : in Wide_String;
  201.                      Item : out Num;
  202.                      Last : out Positive);
  203.  
  204.       procedure Put (To   : out Wide_String;
  205.                      Item : in Num;
  206.                      Base : in Number_Base := Default_Base);
  207.    end Integer_Io;
  208.  
  209.    -----------------------------------
  210.    -- Input-Output of Modular Types --
  211.    -----------------------------------
  212.  
  213.    --  Not yet implemented ???
  214.  
  215.    --  generic
  216.    --      type Num is mod <>;
  217.  
  218.